@using jiuyuan.服务
@using jiuyuan.数据.基础数据类
@using jiuyuan.数据.怪物类
@using jiuyuan.管理器

<div class="admin-container">
    <div class="admin-header">
        <h3>怪物管理</h3>
        <button class="btn-primary" @onclick="添加新怪物">添加新怪物</button>
    </div>

    <div class="admin-content">
        @if (!数据已加载)
        {
            <div class="loading">正在加载数据...</div>
        }
        else
        {
            <div class="item-list">
                @foreach (var 怪物 in 显示怪物列表)
                {
                    <div class="item-card">
                        <div class="item-info">
                            <h4>@怪物.名称</h4>
                            <p>等级: @怪物.等级</p>
                            <p>生命值: @怪物.基础属性.生命值</p>
                            <p>攻击力: @怪物.基础属性.物理攻击</p>
                        </div>
                        <div class="item-actions">
                            <button class="action-button view-button" @onclick='() => 查看怪物详情(怪物)'>查看</button>
                            <button class="action-button edit-button" @onclick='() => 编辑怪物(怪物)'>编辑</button>
                            <button class="action-button delete-button" @onclick='() => 删除怪物(怪物.Id)'>删除</button>
                        </div>
                    </div>
                }
            </div>
        }
    </div>
</div>

<!-- 怪物详情弹窗 -->
<div class="modal" style="display: @(显示详情弹窗 ? "block" : "none");">
    <div class="modal-content large">
        <div class="modal-header">
            <h3>怪物详情</h3>
            <button class="close-button" @onclick="关闭详情弹窗">&times;</button>
        </div>
        <div class="modal-body">
            @if (选中的怪物 != null)
            {
                <div class="detail-grid">
                    <div class="detail-item">
                        <label>怪物名称:</label>
                        <span>@选中的怪物.名称</span>
                    </div>
                    <div class="detail-item">
                        <label>等级:</label>
                        <span>@选中的怪物.等级</span>
                    </div>
                    <div class="detail-item">
                        <label>图标:</label>
                        <span>@选中的怪物.头像</span>
                    </div>
                    <div class="detail-item full-width">
                        <label>描述:</label>
                        <span>@选中的怪物.描述</span>
                    </div>
                    <div class="detail-item">
                        <label>生命值:</label>
                        <span>@选中的怪物.基础属性.生命值</span>
                    </div>
                    <div class="detail-item">
                        <label>魔法值:</label>
                        <span>@选中的怪物.基础属性.魔法值</span>
                    </div>
                    <div class="detail-item">
                        <label>攻击力:</label>
                        <span>@选中的怪物.基础属性.物理攻击</span>
                    </div>
                    <div class="detail-item">
                        <label>防御力:</label>
                        <span>@选中的怪物.基础属性.物理防御</span>
                    </div>
                    <div class="detail-item">
                        <label>敏捷:</label>
                        <span>@选中的怪物.基础属性.速度</span>
                    </div>
                    <div class="detail-item">
                        <label>智力:</label>
                        <span>@选中的怪物.基础属性.幸运值</span>
                    </div>
                    <div class="detail-item">
                        <label>创建时间:</label>
                        <span>@选中的怪物.创建时间.ToString("yyyy-MM-dd HH:mm")</span>
                    </div>
                    <div class="detail-item">
                        <label>更新时间:</label>
                        <span>@选中的怪物.更新时间.ToString("yyyy-MM-dd HH:mm")</span>
                    </div>
                </div>

                <!-- 技能列表 -->
                <div class="section-divider">
                    <h4>技能列表</h4>
                </div>
                <div class="skill-list">
                    @if (选中的怪物.技能列表.Any())
                    {
                        @foreach (var skill in 选中的怪物.技能列表)
                        {
                            <div class="skill-item">
                                <div class="skill-info">
                                    <strong>@skill.名称</strong>
                                    <div>等级要求: @skill.等级要求 | 消耗: @skill.消耗魔法值 MP</div>
                                </div>
                            </div>
                        }
                    }
                    else
                    {
                        <div class="no-data">暂无技能</div>
                    }
                </div>

                <!-- 掉落物品列表 -->
                <div class="section-divider">
                    <h4>掉落物品列表</h4>
                </div>
                <div class="drop-item-list">
                    @if (选中的怪物.掉落列表.Any())
                    {
                        @foreach (var drop in 选中的怪物.掉落列表)
                        {
                            <div class="drop-item">
                                <div class="drop-item-info">
                                    <strong>@drop.物品详情?.名称</strong>
                                    <div>概率: @(drop.掉落概率 * 100)% | 数量: @drop.最小数量-@drop.最大数量</div>
                                </div>
                            </div>
                        }
                    }
                    else
                    {
                        <div class="no-data">暂无掉落物品</div>
                    }
                </div>
            }
        </div>
    </div>
</div>

<!-- 编辑怪物弹窗 -->
<div class="modal" style="display: @(显示编辑弹窗 ? "block" : "none");">
    <div class="modal-content large">
        <div class="modal-header">
            <h3>@(IsEditing ? "编辑怪物" : "添加新怪物")</h3>
            <button class="close-button" @onclick="关闭编辑弹窗">&times;</button>
        </div>
        <div class="modal-body">
            @if (当前怪物 != null)
            {
                <div class="form-grid">
                    <div class="form-group">
                        <label for="monsterName">怪物名称:</label>
                        <input type="text" id="monsterName" @bind="当前怪物.名称" class="form-control" />
                    </div>
                    <div class="form-group">
                        <label for="monsterLevel">等级:</label>
                        <input type="number" id="monsterLevel" @bind="当前怪物.等级" class="form-control" />
                    </div>
                    <div class="form-group">
                        <label for="monsterIcon">图标:</label>
                        <input type="text" id="monsterIcon" @bind="当前怪物.头像" class="form-control" />
                    </div>
                    <div class="form-group full-width">
                        <label for="monsterDescription">描述:</label>
                        <textarea id="monsterDescription" @bind="当前怪物.描述" class="form-control" rows="3"></textarea>
                    </div>
                    
                    <!-- 基础属性 -->
                    <div class="form-group">
                        <label for="monsterHp">生命值:</label>
                        <input type="number" id="monsterHp" @bind="当前怪物.基础属性.生命值" class="form-control" />
                    </div>
                    <div class="form-group">
                        <label for="monsterMp">魔法值:</label>
                        <input type="number" id="monsterMp" @bind="当前怪物.基础属性.魔法值" class="form-control" />
                    </div>
                    <div class="form-group">
                        <label for="monsterAtk">攻击力:</label>
                        <input type="number" id="monsterAtk" @bind="当前怪物.基础属性.物理攻击" class="form-control" />
                    </div>
                    <div class="form-group">
                        <label for="monsterDef">防御力:</label>
                        <input type="number" id="monsterDef" @bind="当前怪物.基础属性.物理防御" class="form-control" />
                    </div>
                    <div class="form-group">
                        <label for="monsterAgi">敏捷:</label>
                        <input type="number" id="monsterAgi" @bind="当前怪物.基础属性.速度" class="form-control" />
                    </div>
                    <div class="form-group">
                        <label for="monsterInt">智力:</label>
                        <input type="number" id="monsterInt" @bind="当前怪物.基础属性.幸运值" class="form-control" />
                    </div>
                </div>

                <!-- 技能管理 -->
                <div class="section-divider">
                    <h4>技能管理</h4>
                    <button class="btn-primary small" @onclick="添加技能">添加技能</button>
                </div>
                
                <div class="skill-list">
                    @if (当前怪物.技能列表.Any())
                    {
                        @for (int i = 0; i < 当前怪物.技能列表.Count; i++)
                        {
                            var index = i;
                            var skill = 当前怪物.技能列表.ElementAtOrDefault(index);
                            @if (skill != null)
                            {
                                <div class="skill-item">
                                    <div class="skill-info">
                                        <strong>@skill.名称</strong>
                                        <div>等级要求: @skill.等级要求 | 消耗: @skill.消耗魔法值 MP</div>
                                    </div>
                                    <div class="skill-actions">
                                        <button class="action-button delete-button small" @onclick='() => 删除技能(index)'>删除</button>
                                    </div>
                                </div>
                            }
                        }
                    }
                    else
                    {
                        <div class="no-data">暂无技能</div>
                    }
                </div>

                <!-- 掉落物品管理 -->
                <div class="section-divider">
                    <h4>掉落物品管理</h4>
                    <button class="btn-primary small" @onclick="添加掉落物品">添加掉落物品</button>
                </div>
                
                <div class="drop-item-list">
                    @if (当前怪物.掉落列表.Any())
                    {
                        @for (int i = 0; i < 当前怪物.掉落列表.Count; i++)
                        {
                            var index = i;
                            var drop = 当前怪物.掉落列表.ElementAtOrDefault(index);
                            @if (drop != null)
                            {
                                <div class="drop-item">
                                    <div class="form-grid">
                                        <div class="form-group">
                                            <label>物品名称:</label>
                                            <div class="item-selection">
                                                <span>@(drop.物品详情?.名称 ?? "未选择")</span>
                                                <button class="action-button edit-button small" @onclick='() => 打开选择物品弹窗(index)'>选择</button>
                                            </div>
                                        </div>
                                        <div class="form-group">
                                            <label>掉落概率 (0-1):</label>
                                            <input type="number" step="0.01" min="0" max="1" @bind="drop.掉落概率" class="form-control" />
                                        </div>
                                        <div class="form-group">
                                            <label>最小数量:</label>
                                            <input type="number" @bind="drop.最小数量" class="form-control" />
                                        </div>
                                        <div class="form-group">
                                            <label>最大数量:</label>
                                            <input type="number" @bind="drop.最大数量" class="form-control" />
                                        </div>
                                        <div class="form-group">
                                            <label>&nbsp;</label>
                                            <button class="action-button delete-button" @onclick='() => 删除掉落物品(index)'>删除</button>
                                        </div>
                                    </div>
                                </div>
                            }
                        }
                    }
                    else
                    {
                        <div class="no-data">暂无掉落物品</div>
                    }
                </div>

                <div class="btn-group">
                    <button class="btn-primary" @onclick="保存怪物">@(!IsEditing ? "添加" : "更新")</button>
                    <button class="btn-secondary" @onclick="关闭编辑弹窗">取消</button>
                </div>
            }
        </div>
    </div>
</div>

<!-- 选择技能弹窗 -->
<div class="modal" style="display: @(显示选择技能弹窗 ? "block" : "none");">
    <div class="modal-content">
        <div class="modal-header">
            <h3>选择技能</h3>
            <button class="close-button" @onclick="关闭选择技能弹窗">&times;</button>
        </div>
        <div class="modal-body">
            <div class="item-list">
                @foreach (var 技能 in 技能列表)
                {
                    <div class="item-card">
                        <div class="item-info">
                            <h4>@技能.名称</h4>
                            <p>等级要求: @技能.等级要求</p>
                        </div>
                        <div class="item-actions">
                            <button class="action-button edit-button" @onclick='() => 选择技能(技能)'>选择</button>
                        </div>
                    </div>
                }
            </div>
        </div>
    </div>
</div>

<!-- 选择物品弹窗 -->
<div class="modal" style="display: @(显示选择物品弹窗 ? "block" : "none");">
    <div class="modal-content">
        <div class="modal-header">
            <h3>选择物品</h3>
            <button class="close-button" @onclick="关闭选择物品弹窗">&times;</button>
        </div>
        <div class="modal-body">
            <div class="item-list">
                @foreach (var 物品 in 物品列表)
                {
                    <div class="item-card">
                        <div class="item-info">
                            <h4>@物品.名称</h4>
                            <p>类型: @物品.类型</p>
                        </div>
                        <div class="item-actions">
                            <button class="action-button edit-button" @onclick='() => 选择物品(物品)'>选择</button>
                        </div>
                    </div>
                }
            </div>
        </div>
    </div>
</div>

<style>
    .admin-container {
        height: 100%;
        display: flex;
        flex-direction: column;
    }

    .admin-header {
        display: flex;
        justify-content: space-between;
        align-items: center;
        margin-bottom: 20px;
        padding-bottom: 15px;
        border-bottom: 2px solid #4a2c8d;
    }

    .admin-content {
        flex: 1;
        overflow-y: auto;
    }

    .item-list {
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
        gap: 20px;
    }

    .item-card {
        background-color: rgba(30, 30, 60, 0.8);
        border: 1px solid #4a2c8d;
        border-radius: 8px;
        padding: 20px;
        transition: all 0.3s ease;
    }

    .item-card:hover {
        background-color: rgba(40, 40, 80, 0.9);
        border-color: #6a0dad;
        box-shadow: 0 0 15px rgba(106, 13, 173, 0.5);
    }

    .item-info h4 {
        color: #b19cd9;
        margin-bottom: 10px;
        font-size: 1.2rem;
    }

    .item-info p {
        color: #a0a0e0;
        margin: 5px 0;
        font-size: 0.9rem;
    }

    .item-actions {
        display: flex;
        gap: 10px;
        margin-top: 15px;
        justify-content: flex-end;
    }

    .action-button {
        padding: 8px 15px;
        border: none;
        border-radius: 5px;
        cursor: pointer;
        transition: all 0.3s ease;
        font-size: 0.9rem;
    }

    .view-button {
        background-color: rgba(30, 60, 120, 0.8);
        color: #a0c0ff;
    }

    .view-button:hover {
        background-color: rgba(40, 80, 160, 0.9);
        box-shadow: 0 0 10px rgba(64, 128, 255, 0.5);
    }

    .edit-button {
        background-color: rgba(60, 120, 60, 0.8);
        color: #a0ffa0;
    }

    .edit-button:hover {
        background-color: rgba(80, 160, 80, 0.9);
        box-shadow: 0 0 10px rgba(128, 255, 128, 0.5);
    }

    .delete-button {
        background-color: rgba(120, 60, 60, 0.8);
        color: #ffa0a0;
    }

    .delete-button:hover {
        background-color: rgba(160, 80, 80, 0.9);
        box-shadow: 0 0 10px rgba(255, 128, 128, 0.5);
    }

    .small {
        padding: 5px 10px;
        font-size: 0.8rem;
    }

    .btn-primary {
        padding: 10px 20px;
        background: linear-gradient(to right, #4a2c8d, #6a0dad);
        border: none;
        border-radius: 5px;
        color: white;
        cursor: pointer;
        transition: all 0.3s ease;
        font-size: 1rem;
    }

    .btn-primary:hover {
        background: linear-gradient(to right, #5a3c9d, #7a1ddd);
        box-shadow: 0 0 15px rgba(106, 13, 173, 0.7);
    }

    .btn-secondary {
        padding: 10px 20px;
        background: linear-gradient(to right, #3a3a5a, #5a5a7a);
        border: none;
        border-radius: 5px;
        color: #e0e0ff;
        cursor: pointer;
        transition: all 0.3s ease;
        font-size: 1rem;
    }

    .btn-secondary:hover {
        background: linear-gradient(to right, #4a4a6a, #6a6a8a);
        box-shadow: 0 0 15px rgba(90, 90, 122, 0.7);
    }

    .btn-group {
        display: flex;
        gap: 15px;
        margin-top: 20px;
        justify-content: flex-end;
    }

    .loading {
        text-align: center;
        padding: 30px;
        color: #a0a0e0;
        font-size: 1.2rem;
    }

    /* 弹窗样式 */
    .modal {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background-color: rgba(0, 0, 0, 0.7);
        z-index: 1000;
        display: flex;
        justify-content: center;
        align-items: center;
    }

    .modal-content {
        background-color: rgba(20, 20, 40, 0.95);
        border: 2px solid #4a2c8d;
        border-radius: 10px;
        width: 90%;
        max-width: 800px;
        max-height: 90%;
        overflow-y: auto;
        box-shadow: 0 0 30px rgba(106, 13, 173, 0.8);
    }

    .modal-content.large {
        max-width: 1000px;
    }

    .modal-header {
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding: 20px;
        border-bottom: 1px solid #4a2c8d;
    }

    .modal-header h3 {
        color: #b19cd9;
        margin: 0;
    }

    .close-button {
        background: none;
        border: none;
        color: #b19cd9;
        font-size: 1.8rem;
        cursor: pointer;
        padding: 0;
        width: 30px;
        height: 30px;
        display: flex;
        align-items: center;
        justify-content: center;
    }

    .close-button:hover {
        color: #ff5555;
    }

    .modal-body {
        padding: 20px;
    }

    /* 表单样式 */
    .form-grid {
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
        gap: 20px;
        margin-bottom: 20px;
    }

    .form-group {
        margin-bottom: 15px;
    }

    .form-group.full-width {
        grid-column: 1 / -1;
    }

    .form-group label {
        display: block;
        margin-bottom: 5px;
        color: #a0a0e0;
        font-weight: 500;
    }

    .form-control {
        width: 100%;
        padding: 10px;
        background-color: rgba(30, 30, 60, 0.8);
        border: 1px solid #4a2c8d;
        border-radius: 5px;
        color: #e0e0ff;
        font-size: 1rem;
    }

    .form-control:focus {
        outline: none;
        border-color: #6a0dad;
        box-shadow: 0 0 10px rgba(106, 13, 173, 0.5);
    }

    textarea.form-control {
        resize: vertical;
        min-height: 80px;
    }

    select.form-control {
        appearance: none;
        background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23a0a0e0' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");
        background-repeat: no-repeat;
        background-position: right 10px center;
        background-size: 15px;
    }

    /* 详情样式 */
    .detail-grid {
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
        gap: 20px;
    }

    .detail-item {
        margin-bottom: 15px;
    }

    .detail-item.full-width {
        grid-column: 1 / -1;
    }

    .detail-item label {
        display: block;
        color: #a0a0e0;
        font-weight: 500;
        margin-bottom: 5px;
    }

    .detail-item span {
        display: block;
        color: #e0e0ff;
        padding: 8px;
        background-color: rgba(30, 30, 60, 0.8);
        border: 1px solid #4a2c8d;
        border-radius: 5px;
    }

    /* 分隔线 */
    .section-divider {
        margin: 30px 0 20px;
        padding-bottom: 10px;
        border-bottom: 1px solid #4a2c8d;
    }

    .section-divider h4, .section-divider h5 {
        color: #b19cd9;
        margin: 0;
    }

    /* 技能列表 */
    .skill-list {
        margin-top: 15px;
    }

    .skill-item {
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding: 15px;
        background-color: rgba(30, 30, 60, 0.8);
        border: 1px solid #4a2c8d;
        border-radius: 5px;
        margin-bottom: 10px;
    }

    .skill-info {
        flex: 1;
        color: #e0e0ff;
    }

    .skill-info strong {
        color: #b19cd9;
    }

    .skill-actions {
        display: flex;
        gap: 10px;
    }

    /* 掉落物品列表 */
    .drop-item-list {
        margin-top: 15px;
    }

    .drop-item {
        padding: 15px;
        background-color: rgba(30, 30, 60, 0.8);
        border: 1px solid #4a2c8d;
        border-radius: 5px;
        margin-bottom: 15px;
    }

    .form-grid .form-group {
        margin-bottom: 10px;
    }

    .drop-item-info {
        color: #e0e0ff;
    }

    .drop-item-info strong {
        color: #b19cd9;
    }

    /* 无数据提示 */
    .no-data {
        text-align: center;
        padding: 20px;
        color: #a0a0e0;
        font-style: italic;
    }

    /* 物品选择样式 */
    .item-selection {
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding: 8px;
        background-color: rgba(30, 30, 60, 0.8);
        border: 1px solid #4a2c8d;
        border-radius: 5px;
    }

    .item-selection span {
        flex: 1;
        color: #e0e0ff;
    }
</style>

@code {
    // 注入服务
    [Inject] public 配置加载器 配置加载器 { get; set; } = default!;

    [Inject] public ILogger<怪物管理> Logger { get; set; } = default!;

    // 实际的怪物数据列表（从数据库获取）
    private List<怪物> 怪物列表 = new List<怪物>();
    
    // 用于显示的怪物列表（直接使用实际怪物数据）
    private List<怪物> 显示怪物列表 = new List<怪物>();
    
    // 实际的技能数据列表（从数据库获取）
    private List<技能配置> 技能列表 = new List<技能配置>();

    // 实际的物品数据列表（从数据库获取）
    private List<游戏元素> 物品列表 = new List<游戏元素>();

    // 当前编辑的怪物
    private 怪物 当前怪物 = new 怪物();
    private 怪物 选中的怪物 = new 怪物();
    private bool IsEditing = false;
    private Guid 编辑中的怪物Id = Guid.Empty;
    private bool 显示详情弹窗 = false;
    private bool 显示编辑弹窗 = false;
    private bool 数据已加载 = false;
    
    // 新增：用于选择技能的弹窗
    private bool 显示选择技能弹窗 = false;
    
    // 新增：用于选择物品的弹窗
    private bool 显示选择物品弹窗 = false;
    private int 当前编辑的物品索引 = -1;

    // 页面初始化时加载数据
    protected override async Task OnInitializedAsync()
    {
        await 加载怪物数据();
    }

    // 从数据库加载怪物数据
    private async Task 加载怪物数据()
    {
        try
        {
            怪物列表 = await 配置加载器.获取所有怪物();
            显示怪物列表 = 怪物列表;
            
            // 同时加载技能数据
            技能列表 = await 配置加载器.获取所有技能();
            
            // 同时加载物品数据
            物品列表 = await 配置加载器.获取所有游戏元素();
            
            数据已加载 = true;
            StateHasChanged();
        }
        catch (Exception ex)
        {
            Logger.LogError(ex, "加载怪物数据时发生错误");
        }
    }

    private void 查看怪物详情(怪物 怪物)
    {
        选中的怪物 = 怪物;
        显示详情弹窗 = true;
    }

    private void 关闭详情弹窗()
    {
        显示详情弹窗 = false;
    }

    private void 添加新怪物()
    {
        当前怪物 = new 怪物();
        IsEditing = false;
        编辑中的怪物Id = Guid.Empty;
        显示编辑弹窗 = true;
    }

    private void 编辑怪物(怪物 怪物)
    {
        当前怪物 = new 怪物
        {
            Id = 怪物.Id,
            名称 = 怪物.名称,
            描述 = 怪物.描述,
            等级 = 怪物.等级,
            头像 = 怪物.头像,
            创建时间 = 怪物.创建时间,
            更新时间 = 怪物.更新时间,
            基础属性 = new 属性配置
            {
                生命值 = 怪物.基础属性.生命值,
                魔法值 = 怪物.基础属性.魔法值,
                物理攻击 = 怪物.基础属性.物理攻击,
                物理防御 = 怪物.基础属性.物理防御,
                速度 = 怪物.基础属性.速度,
                幸运值 = 怪物.基础属性.幸运值
            },
            技能列表 = 怪物.技能列表.ToList(),
            掉落列表 = 怪物.掉落列表.ToList()
        };
        IsEditing = true;
        编辑中的怪物Id = 怪物.Id;
        显示编辑弹窗 = true;
    }

    private void 关闭编辑弹窗()
    {
        显示编辑弹窗 = false;
    }

    private async Task 删除怪物(Guid 怪物Id)
    {
        var 怪物 = 显示怪物列表.FirstOrDefault(m => m.Id == 怪物Id);
        if (怪物 != null)
        {
            显示怪物列表.Remove(怪物);
            怪物列表.Remove(怪物);
            
            // 从数据库中删除怪物
            // 注意：这里应该调用配置加载器的删除方法，但目前没有实现
            // 作为临时解决方案，我们重新加载数据
            await 加载怪物数据();
        }
    }

    private async Task 保存怪物()
    {
        if (string.IsNullOrWhiteSpace(当前怪物.名称))
            return;

        try
        {
            // 保存到数据库
            await 配置加载器.保存怪物配置(当前怪物);
            
            // 更新显示列表
            if (!IsEditing)
            {
                // 添加新怪物
                显示怪物列表.Add(当前怪物);
                怪物列表.Add(当前怪物);
            }
            else
            {
                // 更新现有怪物
                var existingMonster = 显示怪物列表.FirstOrDefault(m => m.Id == 编辑中的怪物Id);
                if (existingMonster != null)
                {
                    var index = 显示怪物列表.IndexOf(existingMonster);
                    显示怪物列表[index] = 当前怪物;
                    
                    var originalIndex = 怪物列表.IndexOf(existingMonster);
                    怪物列表[originalIndex] = 当前怪物;
                }
            }

            // 关闭弹窗
            显示编辑弹窗 = false;
            
            // 重新加载数据以确保一致性
            await 加载怪物数据();
        }
        catch (Exception ex)
        {
            Logger.LogError(ex, "保存怪物时发生错误");
        }
    }

    // 技能相关方法
    private void 添加技能()
    {
        // 显示选择技能的对话框
        显示选择技能弹窗 = true;
    }

    private void 删除技能(int index)
    {
        if (index >= 0 && index < 当前怪物.技能列表.Count)
        {
            var skillList = 当前怪物.技能列表.ToList();
            skillList.RemoveAt(index);
            当前怪物.技能列表 = skillList;
        }
    }
    
    // 新增：选择技能相关方法
    private void 关闭选择技能弹窗()
    {
        显示选择技能弹窗 = false;
    }

    private void 选择技能(技能配置 技能)
    {
        // 添加选中的技能到当前怪物
        当前怪物.技能列表.Add(技能);
        关闭选择技能弹窗();
    }

    // 掉落物品相关方法
    private void 添加掉落物品()
    {
        var 新掉落物品 = new 掉落物品
        {
            掉落概率 = 1.0f,
            最小数量 = 1,
            最大数量 = 1
        };
        当前怪物.掉落列表.Add(新掉落物品);
    }

    private void 删除掉落物品(int index)
    {
        if (index >= 0 && index < 当前怪物.掉落列表.Count)
        {
            var dropList = 当前怪物.掉落列表.ToList();
            dropList.RemoveAt(index);
            当前怪物.掉落列表 = dropList;
        }
    }

    // 新增：选择物品相关方法
    private void 打开选择物品弹窗(int index)
    {
        当前编辑的物品索引 = index;
        显示选择物品弹窗 = true;
    }

    private void 关闭选择物品弹窗()
    {
        显示选择物品弹窗 = false;
        当前编辑的物品索引 = -1;
    }

    private void 选择物品(游戏元素 物品)
    {
        if (当前编辑的物品索引 >= 0 && 当前编辑的物品索引 < 当前怪物.掉落列表.Count)
        {
            // 创建新的掉落物品实例，避免引用问题
            var 新掉落物品 = new 掉落物品(物品, 1.0f, 1, 1);
            当前怪物.掉落列表[当前编辑的物品索引] = 新掉落物品;
        }
        关闭选择物品弹窗();
    }
}